home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / test / test_threading.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  2KB  |  60 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. from test.test_support import verbose
  5. import random
  6. import threading
  7. import time
  8. numtasks = 10
  9. sema = threading.BoundedSemaphore(value = 3)
  10. mutex = threading.RLock()
  11. running = 0
  12.  
  13. class TestThread(threading.Thread):
  14.     
  15.     def run(self):
  16.         global running
  17.         delay = random.random() * 2
  18.         if verbose:
  19.             print 'task', self.getName(), 'will run for', delay, 'sec'
  20.         
  21.         sema.acquire()
  22.         mutex.acquire()
  23.         running = running + 1
  24.         if verbose:
  25.             print running, 'tasks are running'
  26.         
  27.         mutex.release()
  28.         time.sleep(delay)
  29.         if verbose:
  30.             print 'task', self.getName(), 'done'
  31.         
  32.         mutex.acquire()
  33.         running = running - 1
  34.         if verbose:
  35.             print self.getName(), 'is finished.', running, 'tasks are running'
  36.         
  37.         mutex.release()
  38.         sema.release()
  39.  
  40.  
  41. threads = []
  42.  
  43. def starttasks():
  44.     for i in range(numtasks):
  45.         t = TestThread(name = '<thread %d>' % i)
  46.         threads.append(t)
  47.         t.start()
  48.     
  49.  
  50. starttasks()
  51. if verbose:
  52.     print 'waiting for all tasks to complete'
  53.  
  54. for t in threads:
  55.     t.join()
  56.  
  57. if verbose:
  58.     print 'all tasks done'
  59.  
  60.